home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #1 / Amiga Plus 1995 #1.iso / fish-disketten / fish_941-950 / d949 / bbbbs / bbbbs65.lha / rexx / Make_BrowseList.baud < prev    next >
Text File  |  1993-10-29  |  7KB  |  284 lines

  1. /* $VER: Make_BrowseList.baud 6.5 © 1993 Richard Lee Stockton (29.10.93)
  2. places archived, user defined, browselist in user's email
  3. the actual archiving is done by ArcBrowse.rexx or ArcAlpha.rexx
  4. copyright 1991-93 Richard Lee Stockton - FREELY DISTRIBUTABLE -
  5. */
  6.  
  7. SIGNAL ON ERROR
  8. SIGNAL ON SYNTAX
  9. SIGNAL ON FAILURE
  10. SIGNAL ON BREAK_C
  11. SIGNAL ON BREAK_E
  12.  
  13. CR='0D'x
  14. def=''
  15. pen3=''
  16.  
  17. name=''
  18. ARG name colorflag totfiles .
  19. IF name='' THEN EXIT 1
  20. IF ADDRESS()~='BAUD' THEN CR=''
  21. IF colorflag~=1 THEN
  22.   DO
  23.     def=''
  24.     pen3=''
  25.   END
  26. IF GETCLIP('BBS_BROWSE')~='' THEN
  27.   DO
  28.     SAY CR
  29.     SAY 'Sorry, the archiver is already in use.  Please try again later.'CR
  30.     EXIT 3
  31.   END
  32. CALL SETCLIP('BBS_BROWSE',name)
  33.  
  34. figarg='s:CONFIG.BBS'
  35. IF ~EXISTS(figarg) THEN figarg='BBS:BBS_TEXT/CONFIG.BBS'
  36. x=OPEN(f,figarg,'R')
  37. IF x=0 THEN
  38.   DO
  39.     SAY 's:CONFIG.BBS and BBS:BBS/CONFIG.BBS are both missing!'
  40.     CALL SETCLIP('BBS_BROWSE')
  41.     EXIT 20
  42.   END
  43.  
  44. lynes.=''
  45. DO i=1 TO 8
  46.   lynes.i=READLN(f)
  47. END
  48. CALL CLOSE(f)
  49.  
  50. compos=POS('/*',lynes.1)
  51. IF compos>0 THEN lynes.1=LEFT(lynes.1,compos-1)
  52. bbsname = STRIP(lynes.1)
  53.  
  54. sysop   = WORD(lynes.2,1)
  55.  
  56. bbspath = WORD(lynes.6,1)
  57. IF ~EXISTS(bbspath) THEN
  58.   DO
  59.     SAY bbspath 'does not exist!'
  60.     CALL SETCLIP('BBS_BROWSE')
  61.     EXIT 21
  62.   END
  63. testchar=RIGHT(bbspath,1)
  64. IF testchar~='/' & testchar~=':' THEN bbspath=bbspath'/'
  65.  
  66. libpath = WORD(lynes.8,1)
  67. IF ~EXISTS(libpath) THEN
  68.   DO
  69.     SAY 'The library path, 'libpath', does not exist!'
  70.     CALL SETCLIP('BBS_BROWSE')
  71.     EXIT 22
  72.   END
  73. testchar=RIGHT(libpath,1)
  74. IF testchar~='/' & testchar~=':' THEN libpath=libpath'/'
  75.  
  76. IF ~EXISTS(bbspath'Users/'name) THEN
  77.   DO
  78.     CALL SETCLIP('BBS_BROWSE')
  79.     EXIT 4
  80.   END
  81.  
  82. SAY CR
  83. SAY 'This background routine will archive selected lists of single-line or'CR
  84. SAY 'full file descriptions from the'pen3 bbsname def'file libraries,'CR
  85. SAY 'The archive will then be saved in email for you.'CR
  86. SAY CR
  87. SAY 'Once you have made your choice of libraries, you will be returned'CR
  88. SAY 'to the main menu(s), and the rest of the process will keep running in'CR
  89. SAY 'the background (ain''t Amiga multi-tasking great?). If the archive'CR
  90. SAY 'is complete before you logout this session, you will be notified online.'CR
  91.  
  92. SAY CR
  93. OPTIONS PROMPT 'Continue? (Ny) '
  94. PULL temp
  95. IF LEFT(temp,1)~='Y' THEN
  96.   DO
  97.     CALL SETCLIP('BBS_BROWSE')
  98.     EXIT 8
  99.   END
  100.  
  101. /* get level, lastbrowse, & excludes from userfile */
  102. SAY CR
  103. x=OPEN(f,bbspath'Users/'name,'R')
  104. IF x=0 THEN EXIT 24
  105. user.=''
  106. colorflag=1
  107. DO i=1 TO 16 WHILE ~EOF(f)
  108.   line=READLN(f)
  109.   IF i=8 THEN
  110.     IF FIND(line,'COLOR')=0 THEN colorflag=0
  111. END
  112. lastbrowse=STRIP(WORD(line,1))
  113. DO i=17 TO 19 WHILE ~EOF(f)
  114.   line=READLN(f)
  115. END
  116. level=READLN(f)
  117. excludes=READLN(f)
  118. CALL CLOSE(f)
  119.  
  120. x=OPEN(f,bbspath'Numbers/LastFile','R')
  121. IF x=0 THEN
  122.   DO
  123.     CALL SETCLIP('BBS_BROWSE')
  124.     EXIT 25
  125.   END
  126. lastfile=STRIP(READLN(f))
  127. CALL CLOSE(f)
  128.  
  129. IF lastbrowse<lastfile THEN
  130.   DO
  131.     OPTIONS PROMPT 'Archive only NEW file descriptions? (nY) '
  132.     PULL temp
  133.     IF LEFT(UPPER(temp),1)='N' THEN lastbrowse=0
  134.   END
  135. ELSE lastbrowse=0
  136.  
  137. SAY CR
  138. OPTIONS PROMPT 'Single line ['pen3'A'def']lphabetical list or ['pen3'F'def']ull File descriptions? (fA) '
  139. PULL singleflag 
  140. IF singleflag~='F' THEN singleflag='A'
  141. SAY CR
  142. OPTIONS PROMPT 'Sort by ['pen3'L'def']ibrary or ['pen3'A'def']ll files together? (lA) '
  143. PULL libflag 
  144. IF libflag~='L' THEN libflag='A'
  145. SAY CR
  146. OPTIONS PROMPT 'Sort by ['pen3'D'def']ate or ['pen3'A'def']lphabetically? (dA) '
  147. PULL alphaflag 
  148. IF alphaflag~='D' THEN alphaflag='A'
  149.  
  150. SAY CR
  151. SAY 'Hang on while I gather the library list...'CR
  152. x=OPEN(f,bbspath'Lists/Libraries','R')
  153. IF x=0 THEN
  154.   DO
  155.     CALL SETCLIP('BBS_BROWSE')
  156.     EXIT 26
  157.   END
  158. dirs.=''
  159. DO i=1
  160.   line=READLN(f)
  161.   IF EOF(f) | line='END' THEN LEAVE i
  162.   num=WORD(line,1)
  163.   IF DATATYPE(num,'N') THEN
  164.     DO
  165.       num=num%1
  166.       IF num>0 & num<100 THEN dirs.num=WORD(line,2)
  167.     END
  168. END
  169. CALL CLOSE(f)
  170.     
  171. liblist=''
  172. numlist=''
  173. SAY CR
  174. IF totfiles>500 & singleflag='F' & lastbrowse=0 THEN
  175.   DO          /* average file desc.= 400 bytes */
  176.     PARSE VERSION . . cpu .
  177.     cpu=RIGHT(cpu,2)/10
  178.     IF cpu<1 THEN cpu=1
  179.     temp=(totfiles+.5)%(7*cpu)
  180.     temp=pen3||temp%60 'hours' temp//60 def'minutes,'
  181.     SAY pen3||CENTER('*** WARNING! ***',75)||def||CR
  182.     SAY 'Archiving' totfiles '['pen3'F'def']ull descriptions may take' temp 'and make'CR
  183.     SAY 'a textfile'pen3 comma(totfiles*400) def'bytes in size. Are you SURE that''s what you want?'CR
  184.     SAY CR
  185.   END
  186. OPTIONS PROMPT 'Archive file descriptions from ALL available libraries? (Ny) '
  187. PULL all_libs
  188. SAY CR
  189. IF LEFT(all_libs,1)='Y' THEN
  190.   DO i=1 TO 99
  191.     IF i>level THEN LEAVE i
  192.     IF dirs.i='' THEN ITERATE i
  193.     IF FIND(UPPER(excludes),UPPER(dirs.i))>0 THEN ITERATE i
  194.     numlist=STRIP(numlist i)
  195.     liblist=STRIP(liblist dirs.i)
  196.   END
  197. ELSE CALL chdir()
  198. SAY CR
  199. IF liblist='' | numlist='' THEN
  200.   DO
  201.     CALL SETCLIP('BBS_BROWSE')
  202.     EXIT 4
  203.   END
  204. SAY 'Archiving...'CR
  205. SAY 'When completed, the archive will be attached to email addressed to you.'CR
  206. SAY CR
  207. IF singleflag='A' THEN
  208.   ADDRESS AREXX ArcAlpha.rexx name lastbrowse alphaflag libflag numlist
  209. ELSE ADDRESS AREXX ArcBrowse.rexx name lastbrowse alphaflag libflag liblist
  210. EXIT 0
  211.  
  212.  
  213. chdir:
  214. string=''
  215. SAY CR
  216. SAY 'Enter a space separated list of library NUMBERS to be archived.'CR
  217. SAY pen3||LEFT('-',75,'-')||def||CR
  218. lns=GETCLIP('BBS_libs.0')
  219. IF ~DATATYPE(lns,'W') THEN
  220.   DO
  221.     SAY 'Library clip failed!  Please inform sysop.'CR
  222.     CALL SETCLIP('BBS_BROWSE')
  223.     EXIT 3
  224.   END
  225. DO i=1 TO lns
  226.   SAY GETCLIP('BBS_libs.'i)||CR
  227. END
  228. OPTIONS PROMPT pen3'Library Numbers: 'def
  229. PULL dirnums
  230. IF dirnums='' THEN RETURN
  231. DO i=1 TO WORDS(dirnums)
  232.   dirnum=WORD(dirnums,i)
  233.   IF ~DATATYPE(dirnum,'W') | dirnum<1 | dirnum>99 THEN ITERATE i
  234.   IF dirs.dirnum='' THEN
  235.     DO
  236.       SAY pen3'Library number' dirnum 'is currently un-assigned.'def||CR
  237.       ITERATE i
  238.     END
  239.   IF dirnum>level | FIND(data.21,UPPER(dirs.dirnum))>0 THEN
  240.     DO
  241.       SAY pen3'You do not have authorization for library' dirnum'!'def||CR
  242.       ITERATE i
  243.     END
  244.   numlist=STRIP(numlist dirnum)
  245.   liblist=STRIP(liblist dirs.dirnum)
  246. END
  247. SAY CR
  248. SAY pen3'The following file libraries will be included.'def||CR
  249. DO i=1 TO WORDS(liblist)
  250.   SAY RIGHT(WORD(numlist,i),3)'.' WORD(liblist,i)
  251. END
  252. SAY CR
  253. OPTIONS PROMPT 'Ready to begin archiving? (nY) > '
  254. PULL temp
  255. IF LEFT(STRIP(temp),1)~='N' THEN RETURN
  256.  
  257. ERROR:
  258. SYNTAX:
  259. FAILURE:
  260. BREAK_C:
  261. BREAK_E:
  262. CALL SETCLIP('BBS_BROWSE')
  263. EXIT 4
  264.  
  265.  
  266. comma:
  267. ARG num .
  268. dgt=LENGTH(num)
  269. numtext=''
  270. IF dgt>3 THEN numtext=','RIGHT(num,3)
  271. IF dgt>6 THEN numtext=','LEFT(RIGHT(num,6),3)||numtext
  272. IF dgt>9 THEN
  273.   DO
  274.     numtext=','LEFT(RIGHT(num,9),3)||numtext
  275.     numtext=LEFT(num,dgt-9)||numtext
  276.   END
  277. ELSE IF dgt>6 THEN numtext=LEFT(num,dgt-6)||numtext
  278. ELSE IF dgt>3 THEN numtext=LEFT(num,dgt-3)||numtext
  279. ELSE numtext=num
  280. RETURN(numtext)
  281.  
  282.  
  283. /* end of Make_BrowseList.rexx */
  284.